<template>
<div>
    <!-- <h1>当前求和为{{he}}</h1>
    <h1>当前求和方法10倍为{{bigSum}}</h1>
    <h1>我在{{xuexiao}}，学习{{xueke}}</h1> -->
    <h1>当前求和为{{sum}}</h1>
    <h1>当前求和方法10倍为{{bigSum}}</h1>
    <h1>我在{{school}}，学习{{subject}}</h1>
    <select v-model="n">
        <!-- 这里的value直接使用会被解析成字符串，使用v-bind绑定，引号里面会被当成表达式处理 -->
        <option :value="1">1</option>
        <option :value="2">2</option>
        <option :value="3">3</option>
    </select>
    <button @click="increment">+</button>
    <button @click="decrement">-</button>
    <button @click="incrementOdd">当前求和为奇数再加</button>
    <button @click="incrementWait">等一等再加</button>
</div>
</template>

<script>
import { mapState, mapGetters } from 'vuex'
export default {
    name:'Count',
    data() {
        return {
            n:1, //当前默认选择的数字
        }
    },
    computed:{
        // 自己写计算属性
        /*he(){
            return this.$store.state.sum
        },
        xuexiao(){
            return this.$store.state.school
        },
        xueke(){
            return this.$store.state.subject
        },*/
        //1.对象写法： mapState生成-计算属性，从state中读取数据。key-计算属性名：value-state对应的属性
        // mapSate返回的是一个对象，computed本身就是对象，在对象中不能直接写对象
        // 使用...把mapState的每一组key-value展开放在computed对象中
        // ...mapState({he:'sum',xuexiao:'school',xueke:'subject'}),
        //2.数组写法：当计算属性名和state中的属性名一致时使用
        ...mapState(['sum','school','subject']),

        /********************************************************************************** */
        /*bigSum(){
            return this.$store.getters.bigSum
        }*/
        //1.对象写法：借助magGetters生成计算属性，从getters中读取数据。key-计算属性名：value-getters对应的属性
        // ...mapGetters({bigSum:'bigSum'})
        //2.数组写法：当计算属性名和getters中的属性名一致时使用
        ...mapGetters(['bigSum'])
    },
    mounted(){
    },
    methods: {
        increment(){
            // 去修改state
            // this.$store.dispatch('jia',this.n)
            // 在actions的jia方法中没有任何逻辑处理，可以跳过actions直接调用commit来到mutations
            this.$store.commit('JIA',this.n)
        },
        decrement(){
            // this.$store.dispatch('jian',this.n)
            this.$store.commit('JIAN',this.n)
        },
        incrementOdd(){
            this.$store.dispatch('jiaOdd',this.n)
        },
        incrementWait(){
            this.$store.dispatch('jiaWait',this.n)
        },
    },
    
}
</script>
<style scoped>
button{
    margin-left: 5px;
}
</style>